﻿namespace Contoso.ActiveDirectory {

    #region Usings
    using System;
    #endregion

    /// <summary>
    /// Predefined property sets that are used for granting access
    /// http://technet.microsoft.com/en-us/library/ff406260.aspx
    /// </summary>
    public static class PropertySets {

        /// <summary>
        /// Property set containing user attributes that describe account restrictions. Applies to User, Computer, and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid AccountRestrictions = new Guid("4c164200-20c0-11d0-a768-00aa006e0529");

        /// <summary>
        /// Contains the DNS-Host-Name and ms-DS-Additional-Dns-Host-Name attributes. Applies to Computer objects.
        /// </summary>
        public static readonly Guid DNSHostNameAttributes = new Guid("72e39547-7b18-11d1-adef-00c04fd8d5cd");

        /// <summary>
        /// Property set containing all lockout and password age related attributes on user account. Applies to Domain and DomainDNS objects.
        /// </summary>
        public static readonly Guid DomainPasswordAndLockoutPolicies = new Guid("c7407360-20bf-11d0-a768-00aa006e0529");

        /// <summary>
        /// Property set containing a set of user attributes that constitute general user information. Applies to User and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid GeneralInformation = new Guid("59ba2f42-79a2-11d0-9020-00c04fc2d3cf");

        /// <summary>
        /// Property set containing user attributes that describe group membership information. Applies to User and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid GroupMembership = new Guid("bc0ac240-79a9-11d0-9020-00c04fc2d4cf");

        /// <summary>
        /// Property set containing user attributes that describe user logon information. Applies to User and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid LogonInformation = new Guid("5f202010-79a5-11d0-9020-00c04fc2d4cf");

        /// <summary>
        /// Applies to Computer, ms-DS-Managed-Service-Account
        /// </summary>
        public static readonly Guid MSTSGatewayAccess = new Guid("FFA6F046-CA4B-4FEB-B40D-04DFEE722543");

        /// <summary>
        /// Property set permitting control to a list of domain attributes. Applies to the DomainDNS object.
        /// </summary>
        public static readonly Guid OtherDomainParameters = new Guid("b8119fd0-04f6-4762-ab7a-4986c76b3f9a");
        
        /// <summary>
        /// Property set containing user attributes that describe user email related information. Applies to User, Group, and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid PhoneAndMailOptions = new Guid("e45795b2-9455-11d1-aebd-0000f80367c1");        
        
        /// <summary>
        /// Property set containing user attributes that describe personal user information. 
        /// Applies to User, Contact, Computer, and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid PersonalInformation = new Guid("77b5b886-944a-11d1-aebd-0000f80367c1");

        /// <summary>
        /// Applies to User and inetOrgPerson objects.
        /// PropertySet members:
        /// ms-PKI-RoamingTimeStamp ms-PKI-DPAPIMasterKeys ms-PKI-AccountCredentials
        /// </summary>
        public static readonly Guid PrivateInformation = new Guid("91E647DE-D96F-4B70-9557-D63FF4F3CCD8");
        
        /// <summary>
        /// Property set containing user attributes that describe user public information. Applies to User, Computer, and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid PublicInformation = new Guid("e48d0154-bcf8-11d1-8702-00c04fb96050");

        /// <summary>
        /// Applies to User and inetOrgPerson objects.
        /// PropertySet members:
        /// Terminal-Server MS-TS-ExpireDate MS-TS-ExpireDate2 MS-TS-ExpireDate3 MS-TS-ExpireDate4 MS-TS-LicenseVersion MS-TS-LicenseVersion2
        /// MS-TS-LicenseVersion3 MS-TS-LicenseVersion4 MS-TS-ManagingLS MS-TS-ManagingLS2 MS-TS-ManagingLS3 MS-TS-ManagingLS4
        /// </summary>
        public static readonly Guid TerminalServerLicenseServer = new Guid("5805BC62-BDC9-4428-A5E2-856A0F4C185E");              

        /// <summary>
        /// Property set containing user attributes that describe user web related information. Applies to User, Contact, and inetOrgPerson objects.
        /// </summary>
        public static readonly Guid WebInformation = new Guid("e45795b3-9455-11d1-aebd-0000f80367c1");
 
    }
}
